MAZE IN MAZE ――――――――――――――――――――――――――――――――――――――― Oh!mz 1986年11月号掲載 S−OS SWORD マシン語 MAZE IN MAZE.SOS       05000H−06DB3H S:05000H ソース  MAZE IN MAZE.ASC 起動方法 MAZE IN MAZE.SOSをロード J5000 ――――――――――――――――――――――――――――――――――――――― いま流行のダンジョン型RPG風の 3D迷路ゲームの登場です。 モンスターを退治し、 アイテムを集めて地価迷路から脱出しましょう。 セーブ/ロード機能もついて なかなかの親切設計です。 解き終わったらマップを書き換えて オリジナル迷路を作るのも楽しそうですね。 ●STORY 「フゥー、暑い!!」 オレは今エジプトにいる。 なぜかというと大学の考古学の権威である老教授に、 「タダで海外旅行したくないか?」 とさそわれたのだ。 まさか遺跡の発掘の手伝いをさせふれるは……。 なんでもここは戦士の養成所跡だったらしい。 それにしても暑い! どうやら日射病にかかったようだ。 くらくらする。 オレが北西の端に井戸のようなものを掘り出したのはそんなときだった。 めまいのする頭を中に突っ込んでのぞいても奥にはなにも見えない。 ふいに背中に人の手が触れたのを感じた。 オレの体は疲労のため逆らうこともできず、 次の瞬間には井戸の中へ落ち込んでいった。 どのくらい時間が流れたのだろうか。 オレは目を覚ました。 上を見ても出口らしきものは見えない。 オレは老教授が話していた言葉を思い出した。 「北西の入口から入れられた者はモンスターと戦いながら  13の道具を取って東南の出口まで行き、  出られたら勇者として認められるという、  いわぱ弱肉強食の戦士の養成所が  アフリカにあったそうじゃ」 幸運なことに腰にはサバイバルナイフがある。 オレはナイフを握り、1歩ずつ進んでいった。 ●入力方法 各機種のモニタまたはマシン語入力ツールで、 リスト1のとおり5000Hから6DB3Hまでを打ち込んでください。 ソースで入力する方はZEDAからX8000を実行後 リスト2を打ち込みアセンブルしてください。 チェックサムを確認したとあえずセーブし、 J5000でゲームの始まりです。 ●HOW TO PLAY [2]、[4]、[6]でそれぞれ後ろ、左、右を向き、 [8]で1歩前進です。 敵とアイテム(爆弾)はともに“?”で表示されます。 “?”が敵ならば即座に戦闘モードに入り、 スペースキーで攻撃です。 このときほかのキーを押すと 自分のPOWERが1減りますので気をつけてください。 なお敵か自分のどちらかが死ぬまで このモードからは抜けられません。 LIFEおよびPOWERは敵の攻撃を受けると減っていきますが、 迷路を歩いているうちに少しずつ回復できます。 当然LIFE、POWERがなくなると死んでしまいゲーム終了です。 壁のメッセージは出口ヘのヒントになっていますが、 あまり素直に従っているとアイテムを取り逃がすかもしれません。 そのほか[L]、[S]キーでロード、セーブの機能がありますので 活用してください。 なおアイテムは取り残さないよう注意してください。 迷路はかなり広いものですのでマップを取りながら ゲームを進めたほうがよいでしょう。 どうしても解けないという人は ソースリストのマップ部分を参考にしてください。 また,みごと脱出できた人はマップを書き換えたり、 画面表示を変えるなど拡張して楽しむのもよいでしょう。 ●PROGRAMについて MAIN部はソースリストの80〜 123行です。 S−OSでは音が1種類しか出ません。 それではちょっと寂しかったのでサブルーチンを作りました。 音楽のデータは1または0で、エンドコードは0DHです。 このデータの先頭アドレスをDEレジスタにセットして 263行をコールするとモールス信号のように音が出ます。 カーソル位置から11文字だけ出力して下の行に移り、 再び11文字だけ出力するルーチンが 232行に入っています。 データはDEレジスタに先頭アドレスを、 エンドコードは0DHです。 3D表示に関しては、 517行 〜  1歩先に壁があるかどうか調べる 551行 〜  方向チェンジ 592     方向に従って自分の横と前方を  〜 888行 特殊ワークに入れる 1012行〜  実際に画面に壁を描く となっています。 1469行〜の乱数発生ルーチンは、 85年9月号の質問箱のを使わせてもらいました。 あとはメモリマップ、変数マップをつけておきますので 参考にしてください。 2289行の“.”を“\”に、 2291行の“.”を“/”に変えると迷路が見やすくなると思いますが、 X1には“\”がないのでこの改造はできません。 1366行、1373行、1380行、1387行の“,”や“?”は 通路中の敵などのキャラクタ(遠い順)なので 好きなように変えてください。 図1 メモリマップ ・―――――――――――――――――・ |    ・―――――――――・  | |    |         |  | | 5000H|―――――――――|  | |    |         |  | |    |  プログラム  |  | |    |         |  | | 6DA6H|―――――――――|  | |    |         |  | | 7000H|―――――――――|  | |    |ロード、セーブ用 |  | |    |  データエリア |  | | 7A50H|―――――――――|  | |    |         |  | |    |         |  | |    ・―――――――――・  | ・―――――――――――――――――・ 表1 特殊ワークエリアの使用状況 ・―――――――――――――――――――――――・ |00H   |方向 1:N 2:W       | |     |   3:S 4:E       | |01H〜10H|自分の横・前方の状況       | |     |      ・―――――――――・| |     |      |4|7|10|13|16|| |     |    ・―+―+―+―+―+―|| |     |  ← |1|3|5|9|12|15|| |     |    ・―+―+―+―+―+―|| |     |進行方向  |2|5|8|11|14|| |     |      ・―――――――――・| |     |    自分の位置=15      | |11H、12H|特殊ワーク内マップの自分のいる場所| |13H   |アイテムの数           | |14H〜18H|乱数用ワークエリア        | |19H〜1BH|敵データ             | |1CH   |LIFE(表示用)        | |1DH   |POWER(表示用)       | |1EH   |LIFE             | |1FH   |POWER            | |20H   |死亡フラグ            | |22H   |ラストデモ用           | |50H〜  |敵データ 29×4個        | |150H 〜 |迷路データ 900H個        | ・―――――――――――――――――――――――・ ●最後に 私はRPGはハイドライドしか持っていません。 RPGがやりたい、マッピングがやりたい、3D迷路を作りたい、 という3つの願望がこのゲームを作るきっかけでした。 私はプリンタもディスクもありません。 でもがんばって作りました。 皆さんもがんばってS−OSを盛り上げましょう。